#include <iostream>
using namespace std;
#include <string>
#include <unistd.h>
#include <cassert>
#include <sys/types.h>
#include <signal.h>
#include <stdlib.h>

//int count = 1;
void catchsig(int signo)
{
    cout<<"捕捉到一个信号 signo:   "<<signo<<endl;
    //exit(1);
}
// void Usage(const string& proc)
// {
//     cout<<"Usage: "<<"pid  signo"<<endl;
//     exit(1);
// }
int main(int argc,char*argv[])
{
    for(int signo = 1;signo<=31;++signo)
    {
        signal(signo,catchsig);
    }
    while(true)
    {
        cout<<"hello world   id:"<<getpid()<<endl;
        sleep(1);
    }

    // int a[10];
    // a[10000] = 10;

    //signal(SIGFPE,catchsig);
    // signal(SIGSEGV,catchsig);

    // int* p = nullptr;
    // *p = 10;
    // int a = 10;
    // a /= 0;

    // signal(SIGALRM,catchsig);
    // alarm(1);
    // while(true)
    // {
    //     //cout<< "我是一个进程，正在打印count的值"<<count++<<endl;
    //     count++;
    // }
    // int cnt = 0;
    // while(cnt < 10)
    // {
    //     cout<<"我是一个进程，我的id以及次数cnt是："<<getpid()<<" "<<cnt++<<endl;
    //     if(cnt == 5)
    //     {
    //         //raise(9);
    //         abort();
    //     }
    //     sleep(1);
    // }

    // if(argc != 3)
    // {
    //     Usage(argv[0]);
    // }
    // pid_t pid = atoi(argv[1]);
    // int signo = atoi(argv[2]);
    // int n = kill(pid,signo);
    //assert(n == 0);
    // signal(8,catchsig);
    // while(1)
    // {
    //     cout<<"我是一个进程，正在运行 "<<getpid()<<endl;
    //     sleep(1);
    //     int a = 10;
    //     a/=0;
    // }
    return 0;
}